<?php 
/**
 * CodeIgniter Image Class
 *
 * php_mcrypt扩展、加密解密
 *
 * @package		CodeIgniter
 * @author		$Author$
 * @subpackage	Libraries
 * @category	Libraries
 * @version     $Id$
 *
 */
class CT_Mcrypt
{
	private $iv = 'defcab9701524683';
	
	private $key = '0123456789abcdef';
	
	/**
	 * 加密
	 * @param string $str
	 * @return string
	 */
	function encode($str) {
	  $iv = $this->iv;
	  $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);
	  mcrypt_generic_init($td, $this->key, $iv);
	  $encrypted = mcrypt_generic($td, $str);
	  mcrypt_generic_deinit($td);
	  mcrypt_module_close($td);
	  return bin2hex($encrypted);
	}

	/**
	 * 解密程序
	 * @param unknown $code
	 * @return string
	 */
	function decode($code) {
	  $code = $this->hex2bin($code);
	  $iv = $this->iv;
	  $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);
	  mcrypt_generic_init($td, $this->key, $iv);
	  $decrypted = mdecrypt_generic($td, $code);
	  mcrypt_generic_deinit($td);
	  mcrypt_module_close($td);
	  return utf8_encode(trim($decrypted));
	}
	
	protected function hex2bin($hexdata) {
	  $bindata = '';
	  for ($i = 0; $i <strlen($hexdata); $i += 2) {
		$bindata .= chr(hexdec(substr($hexdata, $i, 2)));
	  }
	  return $bindata;
	}

}
